
public class Test3 {
    public static void main(String[] args) {
        String s = "Java";//定义一个字符串"Java",引用为s
        StringBuilder builder = new StringBuilder(s);//创建一个StringBuilder类的对象，builder中存放的字符串内容与s相同
        change(s,builder);//调用静态方法change，分别对String类型和StringBuilder类型的字符串进行操作

        System.out.println(s);//输出字符串s
        //结果分析：
        //对String类型的字符串的更改并不是在原字符串上直接进行修改，而是生成新的字符串
        //而改变后的形参s并没有通过返回值返回给实参，故实参s没有改变，故输出结果为："Java"

        System.out.println(builder);//输出builder中的字符串
        //结果分析：
        //对StringBuilder类型的字符串的更改是在原字符串上直接进行修改，所以输出builder，得到的就是更改后的字符串。
        //故输出结果为："Java and HTML"
    }

    //定义一个pravate控制的静态方法change，参数为一个String类型的字符串s和一个StringBuilder类型的字符串builder
    private static void change(String s, StringBuilder builder){
        s = s + "and HTML";//把字符串s和字符串"and HTML"连接起来形成一个新的字符串，把新字符串的引用赋给形参s
        builder.append(" and HTML");//调用StringBuilder中提供的方法，把字符串" and HTML"附加在字符串s的后面
    }
}
